﻿using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Data;
using SoftSource.MVVMC;
using SoftSource.Timecard.Web.Data;

namespace SoftSource.Timecard.ViewModelInterfaces
{
    public interface IInvoicingViewModelConsume : IDataViewModelConsume
    {
        #region Properties

        PagedCollectionView Projects { get; }

        #endregion Properties

        #region Methods

        Func<int, IObservable<string>> MarkProjectAsBilled { get; }
        Func<int, Action, UIElement> CreateProjectEditor { get; }

        #endregion Methods
    }
    public interface IInvoicingViewModelService : IDataViewModelService
    {
        #region Properties

        IEnumerable<InvoicingProject> ProjectSource { get; set; }

        #endregion Properties

        #region Methods

        Func<int, DateTime, IObservable<IEnumerable<EntryLog>>> MarkProjectAsBilledService { get; set; }
        Func<int, Action, UIElement> CreateProjectEditor { get; set; }

        #endregion Methods
    }
    public interface IInvoicingViewModel : 
        IDataViewModel, 
        IInvoicingViewModelConsume,
        IInvoicingViewModelService
    {
    }
}
